package logica_de_presentacion;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import comun.Pelicula;
import logica_de_negocio.ExcepDeleteOnCascade;
import logica_de_negocio.gestorPeli;

public class FormularioBorrarPeliculaPorPais extends JInternalFrame implements
		ActionListener {

	private static final long serialVersionUID = 1L;
	protected JComboBox<String> campo;
	protected JButton borrar, cancelar;

	public FormularioBorrarPeliculaPorPais() throws ClassNotFoundException {

		super("Buscar Pelicula por titulo", true, true, true, true);
		this.setVisible(true);
		this.getContentPane().setLayout(new BorderLayout());

		JPanel pBotones = new JPanel();

		// BORRAR
		ImageIcon imagenBorrar = createImageIcon("/logica_de_presentacion/imagenes/BORRAR.gif");
		borrar = new JButton("Borrar", imagenBorrar);
		borrar.addActionListener(this);
		pBotones.add(borrar);

		// CANCELAR
		ImageIcon imagenCancelar = createImageIcon("/logica_de_presentacion/imagenes/CANCELAR.gif");
		cancelar = new JButton("Cancelar", imagenCancelar);
		cancelar.addActionListener(this);
		pBotones.add(cancelar, "South");

		// BOTONES
		this.getContentPane().add(pBotones, BorderLayout.SOUTH);

		gestorPeli gp = new gestorPeli();
		gp.cargarDatos();

		campo = new JComboBox<String>(gp.getPaises());

		this.getContentPane().add(campo, BorderLayout.CENTER);
		JLabel jl = new JLabel("Por Pais");
		this.getContentPane().add(jl, BorderLayout.NORTH);

		this.pack();

	}

	@Override
	public void actionPerformed(ActionEvent e) {

		JButton BotonPulsado = (JButton) e.getSource();

		if (BotonPulsado == cancelar) {
			this.dispose();
		}
		if (BotonPulsado == borrar) {

			String sel = (String) campo.getSelectedItem();
			try {
				borrar(sel);
			} catch (ClassNotFoundException e1) {
				JOptionPane.showMessageDialog(new Frame(),
						"No hay informacion en la base de datos");
				this.dispose();
			}
			this.dispose();
		}
	}

	/** Returns an ImageIcon, or null if the path was invalid. */
	protected static ImageIcon createImageIcon(String path) // ICONO
	{
		java.net.URL imgURL = Button.class.getResource(path);
		if (imgURL != null) {
			return new ImageIcon(imgURL);
		} else {
			System.err.println("Couldn't find file: " + path);
			return null;
		}
	}

	public void borrar(String sel) throws ClassNotFoundException {

		gestorPeli gp = new gestorPeli();

		ArrayList<Pelicula> retorno = gp.busPais(sel);
		if (retorno.size() == 1) {
			Pelicula pel = retorno.get(0);// COMO SOLO HAY UNO
			boolean b = false;
			int id_p = pel.getId_p();
			try {
				b = gp.borrar(id_p, new ExcepDeleteOnCascade());
			} catch (ExcepDeleteOnCascade e) {
				e.setAceptado(true);
				try {
					b = gp.borrar(id_p, e);
				} catch (ExcepDeleteOnCascade e1) {
					int res2 = JOptionPane
							.showConfirmDialog(
									new Frame(),
									"Al eliminar la pelicula tambien se eliminaran los comentarios de los usuarios y estos dejaran de seguir la pelicula");
					if (res2 == 0) {
						e.setAceptado(true);
						try {
							gp.borrar(id_p, e);
						} catch (ExcepDeleteOnCascade e2) {
						}
					}
				}
			}

			if (b) {
				JOptionPane.showMessageDialog(new Frame(), "Se ha borrado");
			} else {
				JOptionPane.showMessageDialog(new Frame(), "NO se ha borrado");
			}
		} else {

			int res = JOptionPane.showConfirmDialog(new Frame(),
					"Desea borrar varias peliculas de ese pais? ");
			if (res == 0) {
				for (Pelicula p : retorno) {
					int id_p = p.getId_p();
					try {
						gp.borrar(id_p, new ExcepDeleteOnCascade());
					} catch (ExcepDeleteOnCascade e) {

						int res2 = JOptionPane
								.showConfirmDialog(
										new Frame(),
										"Al eliminar la pelicula con titulo "
												+ p.getTitulo()
												+ " tambien se eliminaran los comentarios de los usuarios y estos dejaran de seguir la pelicula");
						if (res2 == 0) {
							e.setAceptado(true);
							try {
								gp.borrar(id_p, e);
							} catch (ExcepDeleteOnCascade e1) {
							}
						}

					}
				}
			}
		}
	}
}